﻿using System;
using System.Collections.Generic;
using System.Text;
using Comun;
using System.Data;

namespace FacProFacu
{
    public class Usuario
    {
        public DataSet VerificarLogeo(string sUsuario, string sContraseña)
        {
            DataSet Ds = new DataSet();

            Comun.Conexion conn = new Comun.Conexion();
            conn.Conectar();
            if (conn.Errores.Cantidad() == 0)
            {
                DalcProFacu.Usuario logeo = new DalcProFacu.Usuario(conn);

                Ds = logeo.VerificarLogeo(sUsuario, sContraseña);

                //this.Errores = logeo.Errores;
                conn.Desconectar();
            }
            return Ds;
        }

        public DataSet HabilitarMenus(string sPerfil)
        {
            DataSet Ds = new DataSet();

            Comun.Conexion conn = new Comun.Conexion();
            conn.Conectar();
            if (conn.Errores.Cantidad() == 0)
            {
                DalcProFacu.Usuario logeo = new DalcProFacu.Usuario(conn);

                Ds = logeo.HabilitarMenus(sPerfil);

                //this.Errores = logeo.Errores;
                conn.Desconectar();
            }
            return Ds;
        }

        public DataSet GetPerfiles()
        {
            DataSet Ds = new DataSet();

            Comun.Conexion conn = new Comun.Conexion();
            conn.Conectar();
            if (conn.Errores.Cantidad() == 0)
            {
                DalcProFacu.Usuario usuario = new DalcProFacu.Usuario(conn);

                Ds = usuario.GetPerfiles();

                //this.Errores = logeo.Errores;
                conn.Desconectar();
            }
            return Ds;
        }

        public int AltaUsuario(string sUsuario, string sPass, int sPerfil, string sNombre)
        {
            int nuevo = 0;

            Comun.Conexion conn = new Comun.Conexion();
            conn.Conectar();

            if (conn.Errores.Cantidad() == 0)
            {
                DalcProFacu.Usuario usuario = new DalcProFacu.Usuario(conn);

                nuevo = usuario.AltaUsuario(sUsuario, sPass, sPerfil, sNombre);

                //this.Errores = paciente.Errores;
                conn.Desconectar();
            }
            return nuevo;
        }

        public DataSet GetUsuario(string sUsuario)
        {
            DataSet Ds = new DataSet();

            Comun.Conexion conn = new Comun.Conexion();
            conn.Conectar();
            if (conn.Errores.Cantidad() == 0)
            {
                DalcProFacu.Usuario usuario = new DalcProFacu.Usuario(conn);

                Ds = usuario.GetUsuario(sUsuario);

                //this.Errores = logeo.Errores;
                conn.Desconectar();
            }
            return Ds;
        }

        public int BajaUsuario(string sUsuario)
        {
            int baja = 0;

            Comun.Conexion conn = new Comun.Conexion();
            conn.Conectar();

            if (conn.Errores.Cantidad() == 0)
            {
                DalcProFacu.Usuario usuario = new DalcProFacu.Usuario(conn);

                baja = usuario.BajaUsuario(sUsuario);

                //this.Errores = paciente.Errores;
                conn.Desconectar();
            }
            return baja;
        }

        public DataSet GetUsuarios()
        {
            DataSet Ds = new DataSet();

            Comun.Conexion conn = new Comun.Conexion();
            conn.Conectar();
            if (conn.Errores.Cantidad() == 0)
            {
                DalcProFacu.Usuario usuario = new DalcProFacu.Usuario(conn);

                Ds = usuario.GetUsuarios();

                //this.Errores = logeo.Errores;
                conn.Desconectar();
            }
            return Ds;
        }

        public int ModificacionUsuario(string sUsuario, string sPass, int sPerfil, string sNombre)
        {
            int nuevo = 0;

            Comun.Conexion conn = new Comun.Conexion();
            conn.Conectar();

            if (conn.Errores.Cantidad() == 0)
            {
                DalcProFacu.Usuario usuario = new DalcProFacu.Usuario(conn);

                nuevo = usuario.ModificacionUsuario(sNombre, sPass, sPerfil, sUsuario);

                //this.Errores = paciente.Errores;
                conn.Desconectar();
            }
            return nuevo;
        }

        public int AltaProfesional(string sNombre, string sApellido, string sMatricula, string sEspecialidad,
            string sTipoDoc, string sDocumento, string sSexo, string sDateTime, string sEstadoCivil, string sMail,
            string sCalle, string sNum, string sDto, string sPiso, string sCodPod, string sLocalidad, string sProv,
            string sTelef, string sCel)
        {
            int altaPersonal = 0;
            int altaProf = 0;

            Comun.Conexion conn = new Comun.Conexion();
            conn.Conectar();

            conn.ComienzoTransaccion();

            if (conn.Errores.Cantidad() == 0)
            {
                DalcProFacu.Usuario usuario = new DalcProFacu.Usuario(conn);

                string idPersona = usuario.GetPersonal();

                altaPersonal = usuario.AltaPersonal(idPersona, sNombre, sApellido,
                sTipoDoc, sDocumento, sSexo, sDateTime, sEstadoCivil, sMail,
                sCalle, sNum, sDto, sPiso, sCodPod, sLocalidad, sProv,
                sTelef, sCel);

                if (altaPersonal > 0)
                {
                    altaProf = usuario.AltaProfesional(idPersona, sMatricula, sEspecialidad);

                    if (altaProf > 0)
                    {
                        conn.CommitTransaccion();
                    }
                    else
                    {
                        conn.RollbackTransaccion();
                    }
                }
                else
                {
                    conn.RollbackTransaccion();
                }

                //this.Errores = paciente.Errores;
                conn.Desconectar();
            }
            return altaProf;
        }

        public DataSet GetProfesionales()
        {
            DataSet Ds = new DataSet();

            Comun.Conexion conn = new Comun.Conexion();
            conn.Conectar();

            if (conn.Errores.Cantidad() == 0)
            {
                DalcProFacu.Usuario usuario = new DalcProFacu.Usuario(conn);

                Ds = usuario.GetProfesionales();

                //this.Errores = logeo.Errores;
                conn.Desconectar();
            }
            return Ds;
        }

        public DataSet GetProfesionales(string sBusqueda)
        {
            DataSet Ds = new DataSet();

            Comun.Conexion conn = new Comun.Conexion();
            conn.Conectar();

            if (conn.Errores.Cantidad() == 0)
            {
                DalcProFacu.Usuario usuario = new DalcProFacu.Usuario(conn);

                Ds = usuario.GetProfesionales(sBusqueda);

                //this.Errores = logeo.Errores;
                conn.Desconectar();
            }
            return Ds;
        }

        public int ModificacionProfesional(string sDatos, string sNombre, string sApellido, string sMatricula, string sEspecialidad,
          string sTipoDoc, string sDocumento, string sSexo, string sDateTime, string sEstadoCivil, string sMail,
          string sCalle, string sNum, string sDto, string sPiso, string sCodPod, string sLocalidad, string sProv,
          string sTelef, string sCel)
        {
            int updateprofesional = 0;

            Comun.Conexion conn = new Comun.Conexion();
            conn.Conectar();

            conn.ComienzoTransaccion();

            string aux = sDatos;

            if (conn.Errores.Cantidad() == 0)
            {
                DalcProFacu.Usuario usuario = new DalcProFacu.Usuario(conn);

                string[] idProfesional = aux.Split('-');

                updateprofesional = usuario.ModificacionProfesional(idProfesional[0], sNombre, sApellido,
                sTipoDoc, sDocumento, sSexo, sDateTime, sEstadoCivil, sMail,
                sCalle, sNum, sDto, sPiso, sCodPod, sLocalidad, sProv,
                sTelef, sCel, sMatricula, sEspecialidad);

                if (updateprofesional > 0)
                {
                    conn.CommitTransaccion();
                }
                else
                {
                    conn.RollbackTransaccion();
                }

                //this.Errores = paciente.Errores;
                conn.Desconectar();
            }
            return updateprofesional;
        }

        public int EliminarProfesional(string sUsuario)
        {
            int baja = 0;

            Comun.Conexion conn = new Comun.Conexion();
            conn.Conectar();

            conn.ComienzoTransaccion();

            if (conn.Errores.Cantidad() == 0)
            {
                DalcProFacu.Usuario usuario = new DalcProFacu.Usuario(conn);

                baja = usuario.EliminarProfesional(sUsuario.Trim());

                if (baja > 0)
                {
                    conn.CommitTransaccion();
                }
                else
                {
                    conn.RollbackTransaccion();
                }

                //this.Errores = paciente.Errores;
                conn.Desconectar();
            }
            return baja;
        }
    }
}
